/**
 * 针对antd的重复操作进行的方法封装
 */
import { TableColumnsType } from 'ant-design-vue'
import { ColumnType } from 'ant-design-vue/es/table'
import { cloneDeep } from 'g6-fn'

export interface MyColumnType extends ColumnType {
  slot?: string // 插槽名
  isAdaption?: boolean // 自适应宽度
  isSort?: boolean // 开启排序
}

// 过滤表单列配置
export const filterTableColumns: (options: MyColumnType[]) => TableColumnsType = options => {
  options.forEach(it => {
    // 给所有元素添加超出省略
    it.ellipsis = true

    // 给需要排序的列增加sorter
    if (it.isSort) {
      it.sortDirections = ['ascend', 'descend']
      it.sorter = (a, b) => a - b
    }
  })
  return cloneDeep(options)
}

// 数据渲染前可以再次改变，一般用于空数据的默认配置
export const transformCellText = ({ text }: { text: string }) => {
  return text && text.length !== 0 ? text : '-'
}

// 列拖拽
export const handleResizeColumn = (w: number, col: ColumnType) => {
  col.width = w
}
